package action.produit;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import service.securite.Erreur;
import action.general.NotreServlet;
import bdd.ProduitBdd;
import bean.produit.Couleur;
import bean.produit.Declinaison;
import bean.produit.ElementPanier;
import bean.produit.Panier;
import bean.produit.Produit;
import bean.produit.Taille;


public class SupprimerPanierAction extends NotreServlet {
	   static final long serialVersionUID = 1L;
	   
	    /* (non-Java-doc)
		 * @see javax.servlet.http.HttpServlet#HttpServlet()
		 */

		

		public ActionForward execute(final ActionMapping pMapping,
				ActionForm pForm, final HttpServletRequest pRequete,
				final HttpServletResponse pReponse) {
			
			ActionErrors errors = new ActionErrors();
			super.execute(pMapping, pForm, pRequete, pReponse);
			
			try {
				Couleur c = null;
				Taille t = null;
				int numP = Integer.parseInt(pRequete.getParameter("produit").trim());
				if ( pRequete.getParameter("couleur")!=null && pRequete.getParameter("couleur").toString().trim()!="" ) {
					c = ProduitBdd.getCouleur(Integer.parseInt(pRequete.getParameter("couleur").trim()));
					if (c == null) {
						errors.add("errors",new ActionMessage("errors.dynamic","Ce produit n'existe pas"));
						saveErrors(pRequete,errors); 
						return (new ActionForward(pMapping.getInput()));
					}
				}
				if ( pRequete.getParameter("taille") != null && pRequete.getParameter("taille").trim() != "" ) {
					t = ProduitBdd.getTaille(Integer.parseInt(pRequete.getParameter("taille")));
					if (t == null) {
						errors.add("errors",new ActionMessage("errors.dynamic","Ce produit n'existe pas"));
						saveErrors(pRequete,errors); 
						return (new ActionForward(pMapping.getInput()));
					}
				}
				
				HttpSession session = pRequete.getSession(true);
				
				if ( session.getAttribute("panier") == null )
					session.setAttribute("panier", new Panier());
				Panier panier = (Panier)session.getAttribute("panier");

				Produit p = ProduitBdd.getProduit(numP);
				if (p == null) {
					//Erreur.setErreur(request, response, getServletContext(), "Ce produit n'existe pas.");
					errors.add("errors",new ActionMessage("errors.dynamic","Ce produit n'existe pas"));
					saveErrors(pRequete,errors); 
					return (new ActionForward(pMapping.getInput()));
				}
				
				Declinaison d = p.getDeclinaison(t, c);
				if (d == null) {
					//Erreur.setErreur(request, response, getServletContext(), "Ce produit n'existe pas.");
					errors.add("errors",new ActionMessage("errors.dynamic","Ce produit n'existe pas"));
					saveErrors(pRequete,errors); 
					return (new ActionForward(pMapping.getInput()));
				}
				
				ElementPanier ep = panier.exist(d);
				if ( ep != null){
					panier.getListElements().remove(ep);
					panier.setMontantTotal(panier.getMontantTotal() - (ep.getPrix()*ep.getQuantite()));
					if(ep.isDoitEtreLivree()){
						panier.setMontantTotal(panier.getMontantTotal() - (ep.getProduit().getLeTarif().getMontantTarif()*ep.getQuantite()));
					}
					if ( panier.getListElements().size() == 0 )
						session.removeAttribute("panier");
				}
				
				//response.sendRedirect("/"+NotreServlet.getDossierSite()+"Panier");
				return pMapping.findForward("success");
			} catch (Exception e) {
				errors.add("errors",new ActionMessage("errors.exception","Ce produit n'existe pas"));
				saveErrors(pRequete,errors); 
				return (new ActionForward(pMapping.getInput()));
			}
			
		}
		
		
}